Computing device components, e.g., central processing units (CPU), and memory subsystems, are steadily evolving in order to provide faster operating speeds. As the speeds of such components increase, their power consumption requirements also increase. Further, as the power consumption requirements of the components increase, so does the overall power consumption of the computing device, e.g., a server or a datacenter. However, computing devices often have power consumption limits, e.g., the power source supplying the power has a maximum power rating, the computing device is limited by externalities like a power cord or a circuit breaker, or a user of the computing device may have desired limits designed to control costs associated with power consumption.
A computing device often executes distinct applications, and each application may be designed to perform a separate and distinct function. For example, an application may collect data, organize the collected data, and store the organized data in memory. In another example, an application may generate a report based upon the collected, organized, and stored data described. Oftentimes, the function of an application dictates which components, e.g., memory subsystem, input/output subsystem, or CPU, in the computing device are used frequently and to what extent each of these components is used. For example, if the application being executed on the computing device is collecting data, the application may perform a greater number of memory access operations as opposed to performing floating point operations, which are CPU intensive. Generally, as the activities performed by a component increases, so does the component's consumption of power.